Spring validations

Descripcion

Como realizar validaciones utilizando las anotaciones de Spring

Solucion

Dependencias

Pimero antes de nada tenemos que indicar las dependencias en el archivo pom.xml, añadimos el siguiente codigo en el archivo:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-validation</artifactId>
</dependency>

Implementación validaciones

Para hacer las comprobaciones tenemos que añadir las etiquetas con las comprobaciones que queremos hacer dentro del modelo, por ejemplo:

IMPORTANTE: Las etiquetas de validacion se tienen que poner en el modelo si se ponen en un DTO tendremos que utilizar la anotacion @Valid para indicar que se haga la comprobacion en esa clase en concreto

@Column(name="NAME")
@Size(max = 5)
private String name;

En este caso utilizamos la etiqueta @Size para indicar el tamaño maximo que puede tener el string name, 5 caracteres en este caso.


Gestionar las excepciones

Cuando una validacion no se cumple lo que ocurre es que se lanza una excepcion, concretamente se lanza la excepcion ConstraintViolationException, podemos utilizar la etiqueta @ExceptionHandler para manejar la excepcion y dar el comportamiento que queramos.

@ExceptionHandler( ConstraintViolationException.class)
public String invalidFields(Exception e) {
    return "La cadena de caracteres no puede ser mayor de 5";
}

A mayores podemos usar la anotacion @Valid que permite indicar que un objeto se debe de validar en su totalidad, la etiqueta la colocariamos tal que asi en un controlador por ejemplo:

NOTA: Las etiquetas de validacion se tienen que poner en el modelo si se ponen en un DTO tendremos que utilizar la anotacion @Valid para indicar que se haga la comprobacion en esa clase en concreto

@PostMapping("/postDBInfo")
public Persona postDBInfo(@Valid @RequestBody Persona persona){
    return repositorio.save(persona);
}

Cuando usamos la etiqueta @Valid la excepcion que se devuelve es MethodArgumentNotValidException, en este caso deberiamos de indicarla en la manejador para poder controlar la excepcion

Etiquetas de validacion

Algunas de las etiquetas de validacion son:

Tags

Spring | Validations